home *** CD-ROM | disk | FTP | other *** search
/ Language/OS - Multiplatform Resource Library / LANGUAGE OS.iso / presto / presto10.lha / src / objects.C < prev    next >
C/C++ Source or Header  |  1991-12-11  |  952b  |  69 lines

  1. /*
  2.  *    objects.c
  3.  *        implementation code for generic objects.  Objects live
  4.  *        on queues.  These queues can have multiple readers and
  5.  *        one writer (not yet).
  6.  *
  7.  *    Last mod:        1/2/88
  8.  *    By:            bnb
  9.  *    Reason:            add print functions
  10.  *
  11.  *    Last mod:        10/18/87
  12.  *    By:            bnb
  13.  *    Reason:            inline cleanups...
  14.  */
  15.  
  16.  
  17.  
  18. #define _OBJECT_C
  19.  
  20. #include "presto.h"
  21.  
  22. void
  23. Object::error(char *s)
  24. {
  25.     cerr << "ERROR: " << s << "\nin Object ";
  26.     this->print(cerr);
  27.     fatalerror();
  28. }
  29.  
  30.        
  31. void
  32. Object::print(ostream& s)
  33. {
  34.     s << form("this = 0x%x, o_name = %10s, o_type = %3d, o_next = 0x%x",
  35.         this, o_name, o_type, o_next);
  36. }
  37.     
  38. ostream& operator<<(ostream& s, Object* o)
  39. {
  40.     if (o)
  41.         o->print(s);
  42.     else
  43.         s << "nil";
  44.     return s;
  45. }
  46.  
  47.  
  48. Oqueue::Oqueue(Object *head)
  49. {
  50.     if (head)    {
  51.         head->o_next = 0;
  52.     }
  53.     oq_head = head;
  54.     oq_tail = head;
  55. }
  56.  
  57.  
  58. void
  59. Oqueue::print(ostream& s)
  60. {
  61.     Object*    o = oq_head;
  62.     while (o)    {
  63.         s << form("--> 0x%x [0x%x] -", o, o->o_next);
  64.         o = o->o_next;
  65.     }
  66. }
  67.  
  68.  
  69.